//
//  CertOID+Extension.m
//  TestProject
//
//  Created by 毕武侠 on 2022/2/19.
//  Copyright © 2022 zhulong. All rights reserved.
//

#import "CertOID+Extension.h"

@implementation CertOID (Extension)

// 根据oid获取扩展类型
+ (CertExtensionType)extensionType:(NSString *)oid {
    static NSDictionary<NSString *, NSNumber *> *eoids;
    if (eoids == nil) {
        eoids = @{
            /* 证书通用扩展 */
            @"2.5.29.35" : @(AuthorityKeyIdentifier),   // 机构密钥标识符
            @"2.5.29.14" : @(SubjectKeyIdentifier),     // 主体密钥标识符
            @"2.5.29.15" : @(KeyUsage),                 // 密钥用法
            @"2.5.29.17" : @(SubjectAltName),           // 使用者备用名称
            @"2.5.29.18" : @(IssuerAltName),            // 颁发者备用名称
            @"2.5.29.19" : @(BasicConstraints),         // 基本限制
            @"2.5.29.32" : @(CertificatePolicies),      // CP 证书策略
            @"2.5.29.31" : @(CRLDistributionPoints),    // CRL分发点
            @"2.5.29.46" : @(FreshestCRL),              // 最新的CRL
            @"2.5.29.37" : @(ExtKeyUsage),              // 扩展密钥用途
            
            @"1.3.6.1.5.5.7.1.1"       : @(AuthorityInfoAccess),    // 颁发机构信息访问
            @"2.16.840.1.113730.1.1"   : @(ExtCertNetscapeType),    // Netscape证书类型
            /* 北京CA扩展 */
            @"1.2.156.112562.2.1.1.1"  : @(Extension_BJCA_EnterpriseCode),  // 北京CA-企业机构代码
            @"1.2.156.112562.2.1.1.23" : @(Extension_Entity_Unique_ID),     // 证书实体唯一标识
            
            @"2.16.840.1.113732.2"     : @(Extension_BJCA_IDCard),      // 北京CA-个人身份证
            @"1.2.86.840.1.176.1"      : @(Extension_BJCA_NONE_1),      // 北京CA-未知扩展1
            
            @"1.2.156.112562.2.1.1.14" : @(Extension_BJCA_NONE_14),     // 北京CA-未知扩展14
            @"1.2.156.112562.2.1.1.30" : @(Extension_BJCA_NONE_30),     // 北京CA-未知扩展30
            @"1.2.156.112562.6.3.2"    : @(Extension_BJCA_NONE_3_2),    // 北京CA-未知扩展3.2
            
            
            /* 自定义扩展 */
            @"1.2.156.10260.4.1.1"     : @(Extension_Person_Identify_Code), // 个人身份标识码
            @"1.2.156.10260.4.1.2"     : @(Extension_Insurance_Number),     // 个人社会保险号码
            @"1.2.156.10260.4.1.3"     : @(Extension_ICRegistration_Number),// 企业工商注册号码
            @"1.2.156.10260.4.1.4"     : @(Extension_Organization_Code),    // 企业组织机构代码
            @"1.2.156.10260.4.1.5"     : @(Extension_Taxation_Numeber),     // 企业税号
            
        };
    }
    return eoids[oid] != nil ? eoids[oid].intValue : CertExtensionNONE;
}

@end

